package com.abai.doubi.server.config;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.TimeUnit;

@Configuration
public class OkHttpConfig {
    /**
     * 注册 OkHttpClient 为单例Bean，全局复用
     */
    @Bean
    public OkHttpClient okHttpClient() {
        // 1. 配置日志拦截器（可选，调试时打印请求/响应日志）
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); // 打印完整日志（BODY级）

        // 2. 构建 OkHttpClient 实例，配置核心参数
        return new OkHttpClient.Builder()
                // 超时配置（关键，避免请求阻塞）
                .connectTimeout(10, TimeUnit.SECONDS) // 连接超时：10秒
                .readTimeout(15, TimeUnit.SECONDS)    // 读取超时：15秒
                .writeTimeout(15, TimeUnit.SECONDS)   // 写入超时：15秒
                // 添加全局拦截器（如日志、Token、Gzip等）
                .addInterceptor(loggingInterceptor)
                // 其他配置（如HTTPS证书、代理等，按需添加）
                // .sslSocketFactory(sslSocketFactory, trustManager) // 自定义HTTPS证书
                // .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8888))) // 代理
                .build();
    }
}
